package com.sxj.corejava.code11_IO.File;

import java.io.File;

/**
 * @author 石小俊
 * 2024年07月26日 16:14
 * 获取指定目录中所有的文件,包含子目录中的文件
 */
public class Test05_递归操作 {

    public static void main(String[] args) {
        File file = new File("E:/test/aa");
        try {
            display(file);
        } catch (FileNotExistException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void display(File file) throws FileNotExistException {
        // 判断该目录是否存在
        if(!file.exists()){
            throw new FileNotExistException("该目录不存在");
        }
        // 判断当前文件是否是目录
        if(file.isDirectory()){
            // 取出当前目录中所有的File
            File[] files = file.listFiles();
            // 遍历这些File
            for(File f : files){
                // 判断当前迭代的File是否是文件
                // 如果是一个文件,则展示信息
                if(f.isFile()){
                    System.out.println(f.getAbsolutePath());
                } else{
                    // 如果是一个目录,则递归处理
                    display(f);
                }
            }
        } else{
            // 如果不是目录,则直接展示对应文件
            System.out.println(file.getAbsolutePath());
        }
    }

}
